package zww.study.objcet;

public class ExtendsStudy {
    /*
    * 继承是面向对象三大特征 封装 多态 继承
    * 子类具有父类的属性和方法 在 子类重新定义属性和方法
    * 或追加属性和方法
    *
    * extends
    *  class 子类名 extends 父类名{
    *       继承可以产生类与类之间的产生关系，子父类关系
    *       产生子父类后，子类可以使用父类中非私有的成员
    *   }
    *
    * 继承：提高了代码的复用性(多个类相同的成员可以放到同一个类中)
    *      提高了代码的维护性(如果方法的代码需要修改，修改一处即可)
    *      继承让类与类之间产生关系，类的耦合性增强，子类与父类之间的少了独立性
    * ————不能盲目使用继承
    *
    * */

    /*
    * Java中类只支持单继承，不支持多继承 错误范例：class A extends B, C { }
    * Java中类支持多层继承
    * */

    /*
    * 在子类方法中访问一个变量，采用的是就近原则。
    * 1. 子类局部范围找
    * 2. 子类成员范围找
    * public class Granddad {
    *       public void drink() {
    *           System.out.println("爷爷爱喝酒");
    * }
    * }
    * public class Father extends Granddad {
    *       public void smoke() {
    *           System.out.println("爸爸爱抽烟"); }
    * }
    * public class Mother {
    *       public void dance() {
    *           System.out.println("妈妈爱跳舞"); }
    *        }
    *        public class Son extends Father {
    *       // 此时，Son类中就同时拥有drink方法以及smoke方法 }
    * 3. 父类成员范围找
    * 4. 如果都没有就报错(不考虑父亲的父亲…)
    * */
}
